#ifndef PARSER_FOR_QUADRUPLES_H
#define PARSER_FOR_QUADRUPLES_H

#include <stdint.h>
#include "../common_defs.h"

#ifdef __cplusplus
extern "C" {
#endif

// 四元式结构定义
typedef struct {
    char op[10];      // 操作符
    char arg1[32];    // 参数1
    char arg2[32];    // 参数2
    char result[32];  // 结果
} Quadruple;

// 全局变量声明
extern Quadruple *quadruples;   // 四元式数组
extern int quad_count;      // 四元式计数
extern int temp_var_count;  // 临时变量计数
extern int label_count;     // 标签计数
extern int quad_capacity;   // 初始四元式容量

// 函数声明
void q_parse_program();
void q_program();
char* q_new_temp();
char* q_new_label();
void q_emit(const char* op, const char* arg1, const char* arg2, const char* result);
char* q_get_var_name(intptr_t *id);
void init_quadruples();
void free_quadruples();
void print_quadruples();
Quadruple* get_quadruples();
int get_quadruple_count();
void q_global_declaration();
void q_function_declaration();
void q_function_parameter();
void q_function_body();
void q_statement();
char* q_expression(int level);
void q_enum_declaration();
void q_init_parser();

#ifdef __cplusplus
}
#endif

#endif /* PARSER_FOR_QUADRUPLES_H */